home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_xemacs.idb / usr / freeware / lib / xemacs-20.4 / lisp / mel / mel.el.z / mel.el
Encoding:
Text File  |  1998-05-21  |  6.0 KB  |  185 lines

  1. ;;; mel.el : a MIME encoding/decoding library
  2.  
  3. ;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
  4.  
  5. ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
  6. ;; modified by Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
  7. ;; Created: 1995/6/25
  8. ;; Version: $Id: mel.el,v 6.10 1997/07/14 14:15:20 morioka Exp $
  9. ;; Keywords: MIME, Base64, Quoted-Printable, uuencode, gzip64
  10.  
  11. ;; This file is part of MEL (MIME Encoding Library).
  12.  
  13. ;; This program is free software; you can redistribute it and/or
  14. ;; modify it under the terms of the GNU General Public License as
  15. ;; published by the Free Software Foundation; either version 2, or (at
  16. ;; your option) any later version.
  17.  
  18. ;; This program is distributed in the hope that it will be useful, but
  19. ;; WITHOUT ANY WARRANTY; without even the implied warranty of
  20. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  21. ;; General Public License for more details.
  22.  
  23. ;; You should have received a copy of the GNU General Public License
  24. ;; along with GNU Emacs; see the file COPYING.  If not, write to the
  25. ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  26. ;; Boston, MA 02111-1307, USA.
  27.  
  28. ;;; Code:
  29.  
  30. ;;; @ variable
  31. ;;;
  32.  
  33. (defvar mime-temp-directory (or (getenv "MIME_TMP_DIR")
  34.                 (getenv "TM_TMP_DIR")
  35.                 "/tmp/")
  36.   "*Directory for temporary files.")
  37.  
  38.  
  39. ;;; @ region
  40. ;;;
  41.  
  42. (autoload 'base64-encode-region
  43.   "mel-b" "Encode current region by base64." t)
  44. (autoload 'quoted-printable-encode-region
  45.   "mel-q" "Encode current region by Quoted-Printable." t)
  46. (autoload 'uuencode-encode-region
  47.   "mel-u" "Encode current region by unofficial uuencode format." t)
  48. (autoload 'gzip64-encode-region
  49.   "mel-g" "Encode current region by unofficial x-gzip64 format." t)
  50.  
  51. (defvar mime-encoding-method-alist
  52.   '(("base64"           . base64-encode-region)
  53.     ("quoted-printable" . quoted-printable-encode-region)
  54.     ("x-uue"            . uuencode-encode-region)
  55.     ("x-gzip64"         . gzip64-encode-region)
  56.     ("7bit")
  57.     ("8bit")
  58.     ("binary")
  59.     )
  60.   "Alist of encoding vs. corresponding method to encode region.
  61. Each element looks like (STRING . FUNCTION) or (STRING . nil).
  62. STRING is content-transfer-encoding.
  63. FUNCTION is region encoder and nil means not to encode.")
  64.  
  65.  
  66. (autoload 'base64-decode-region
  67.   "mel-b" "Decode current region by base64." t)
  68. (autoload 'quoted-printable-decode-region
  69.   "mel-q" "Decode current region by Quoted-Printable." t)
  70. (autoload 'uuencode-decode-region
  71.   "mel-u" "Decode current region by unofficial uuencode format." t)
  72. (autoload 'gzip64-decode-region
  73.   "mel-g" "Decode current region by unofficial x-gzip64 format." t)
  74.  
  75. (defvar mime-decoding-method-alist
  76.   '(("base64"           . base64-decode-region)
  77.     ("quoted-printable" . quoted-printable-decode-region)
  78.     ("x-uue"            . uuencode-decode-region)
  79.     ("x-uuencode"       . uuencode-decode-region)
  80.     ("x-gzip64"         . gzip64-decode-region)
  81.     )
  82.   "Alist of encoding vs. corresponding method to decode region.
  83. Each element looks like (STRING . FUNCTION).
  84. STRING is content-transfer-encoding.
  85. FUNCTION is region decoder.")
  86.  
  87.  
  88. ;;;###autoload
  89. (defun mime-encode-region (start end encoding)
  90.   "Encode region START to END of current buffer using ENCODING."
  91.   (interactive
  92.    (list (region-beginning) (region-end)
  93.      (completing-read "encoding: "
  94.               mime-encoding-method-alist
  95.               nil t "base64"))
  96.    )
  97.   (let ((f (cdr (assoc encoding mime-encoding-method-alist))))
  98.     (if f
  99.     (funcall f start end)
  100.       )))
  101.  
  102. ;;;###autoload
  103. (defun mime-decode-region (start end encoding)
  104.   "Decode region START to END of current buffer using ENCODING."
  105.   (interactive
  106.    (list (region-beginning) (region-end)
  107.      (completing-read "encoding: "
  108.               mime-decoding-method-alist
  109.               nil t "base64"))
  110.    )
  111.   (let ((f (cdr (assoc encoding mime-decoding-method-alist))))
  112.     (if f
  113.     (funcall f start end)
  114.       )))
  115.  
  116.  
  117. ;;; @ file
  118. ;;;
  119.  
  120. (autoload 'base64-insert-encoded-file "mel-b"
  121.   "Encode contents of file to base64, and insert the result." t)
  122. (autoload 'quoted-printable-insert-encoded-file "mel-q"
  123.   "Encode contents of file to quoted-printable, and insert the result." t)
  124. (autoload 'uuencode-insert-encoded-file
  125.   "mel-u" "Insert file encoded by unofficial uuencode format." t)
  126. (autoload 'gzip64-insert-encoded-file
  127.   "mel-g" "Insert file encoded by unofficial gzip64 format." t)
  128.  
  129. (defvar mime-file-encoding-method-alist
  130.   '(("base64"           . base64-insert-encoded-file)
  131.     ("quoted-printable" . quoted-printable-insert-encoded-file)
  132.     ("x-uue"            . uuencode-insert-encoded-file)
  133.     ("x-gzip64"         . gzip64-insert-encoded-file)
  134.     ("7bit"        . insert-binary-file-contents-literally)
  135.     ("8bit"        . insert-binary-file-contents-literally)
  136.     ("binary"        . insert-binary-file-contents-literally)
  137.     )
  138.   "Alist of encoding vs. corresponding method to insert encoded file.
  139. Each element looks like (STRING . FUNCTION).
  140. STRING is content-transfer-encoding.
  141. FUNCTION is function to insert encoded file.")
  142.  
  143. ;;;###autoload
  144. (defun mime-insert-encoded-file (filename encoding)
  145.   "Insert file FILENAME encoded by ENCODING format."
  146.   (interactive
  147.    (list (read-file-name "Insert encoded file: ")
  148.      (completing-read "encoding: "
  149.               mime-encoding-method-alist
  150.               nil t "base64"))
  151.    )
  152.   (let ((f (cdr (assoc encoding mime-file-encoding-method-alist))))
  153.     (if f
  154.     (funcall f filename)
  155.       )))
  156.  
  157.  
  158. ;;; @ string
  159. ;;;
  160.  
  161. (autoload 'base64-encode-string "mel-b"
  162.   "Encode STRING to base64, and return the result.")
  163. (autoload 'base64-decode-string "mel-b"
  164.   "Decode STRING which is encoded in base64, and return the result.")
  165. (autoload 'quoted-printable-encode-string "mel-q"
  166.   "Encode STRING to quoted-printable, and return the result.")
  167. (autoload 'quoted-printable-decode-string "mel-q"
  168.   "Decode STRING which is encoded in quoted-printable, and return the result.")
  169.  
  170. (autoload 'q-encoding-encode-string "mel-q"
  171.   "Encode STRING to Q-encoding of encoded-word, and return the result.")
  172. (autoload 'q-encoding-decode-string "mel-q"
  173.   "Decode STRING which is encoded in Q-encoding and return the result.")
  174.  
  175. (autoload 'base64-encoded-length "mel-b")
  176. (autoload 'q-encoding-encoded-length "mel-q")
  177.  
  178.  
  179. ;;; @ end
  180. ;;;
  181.  
  182. (provide 'mel)
  183.  
  184. ;;; mel.el ends here.
  185.